package demo;

/**
 * 装饰器模式
 * 动态地给一个对象添加一些额外的功能。就增加功能来说，装饰模式比生成子类更为灵活
 *
 * 装饰器模式是在原有类的基础上动态添加新的功能，这种添加功能的方式不同于继承，
 * 它是在对象层面实现功能扩展，而不是继承的类层面，因此说装饰器模式比继承更加灵活。
 * 装饰器模式属于结构型设计模式。
 * 创建型可以理解为生成新的对象 ，而结构型可以理解为构建更大的类或类对象。
 * @author ZhouWeiBo
 * @create 2022/6/6
 */
public class App {
    public static void main(String[] args) {
        /* 原版 */
        iPhoneMini miniPhone = new iPhoneMini();
        /* 装饰后新版 */
        iPhoneProMax proMaxPhone = new iPhoneProMax(miniPhone);


        System.out.println("-----原版功能-----");
        /* 基础功能 */
        miniPhone.doSomeThing();
        System.out.println("-----------------");


        System.out.println("-----新版功能-----");
        /* 拓展功能 */
        proMaxPhone.doMoreThing();
        System.out.println("-----------------");
    }
}
